上一篇提到了最早的零知識證明,也就是交互式零知識證明,如果想知道的可以點這裡觀看,從上一篇中,可以理解其實交互式零知識證明的概念相當簡單,如果要實作,其實應該也不用費大量的功夫,但現在看到市面上有跟ZK相關的東西,似乎都沒有看到這種交互式零知識證明的影子,基本上那些東西都沒有一來一往的互動,所以讓人非常難察覺那些東西與零知識證明有關聯,至於為什麼會如此,主要是因為雖然交互式零知識證明容易實作,但其實它本身卻有兩個很明顯的缺點。
第一個缺點相當明顯,當我們要開啟一輪零知識證明的時候,首先必須先找到一個驗證者,接著便開始跟他做互動,然而在這互動的過程中相當耗費時間,因為必須要不斷的互相溝通,才能提升證明的安全性,所以在這種模式下,證明者跟驗證者必須不斷的做著重複的事情,相當的麻煩以及沒效率,但其實這都還是在可以忍受的範圍,交互式零知識證明更糟糕的缺點主要是在第二點。
可以發現交互式零知識證明在驗證證明的過程中,只有一位驗證者,那這有什麼問題嗎?如果今天驗證者是善良的,那倒是沒什麼問題,但是如果驗證者是跟證明者一起串通好的呢?那麻煩可就大了,就以之前身分認證作為命題的零知識證明舉例好了,假設今天有個惡意的證明者,他找到了一個願意跟他串通的驗證者,惡意的證明者事先就可以跟驗證者告知自己有哪些簽章,於是在證明的過程中,惡意的驗證者提出的要證明者簽章的訊息都是證明者所擁有的,這樣即便是證明者沒有該把公鑰對應的私鑰,也可以成功的通過零知識證明,即便是他們之後將這證明的過程公開,其他人也沒辦法從這證明的過程找出任何的問題,因為這就是一個成功的零知識證明流程,這個缺點對於交互式零知識證明相當致命,因為每一個人都無法輕易相信除了自己以外的人不是惡意的,因此交互式零知識證明比較不被多數人信任的原因。
那這兩個缺點有辦法改善嗎?有,肯定有的,如果沒辦法改善的話,零知識證明到今天可能還只停留在理論階段而已。那要怎麼樣才能改善呢?改善的方法相當的難,他會牽扯到一些其他的技術,接下來我會花兩篇的時間做個額外技術的小補充,然後再來講解怎樣解決這兩個缺點,那麼我們明天見!